package com.java.day12.queue;

import java.io.File;
import java.util.LinkedList;
import java.util.ListIterator;

public class QueueFiles {
    public static void main(String[] args) {
        String filepath = "D:\\abc";
        printDirByLevel(filepath);
    }

    private static void printDirByLevel(String filepath) {
        //1. String ---> File对象 （目录或则文件）
        File file = new File(filepath);
        //如果传递的参数是文件,那么直接打印这个文件并返回
        if(file.isFile()){
            System.out.println(file.getName());
            return;
        }
        //2.创建队列
        LinkedList<File> queue = new LinkedList<>();
        //先把根放入队列中
        queue.offer(file);
        while(queue.size()>0){
            //取出队首元素
            File first = queue.poll();
            System.out.println(first.getName());
            File[] files = first.listFiles();
            //如果有儿子
            if(files!=null){
                for (int i = 0; i < files.length; i++) {
                    queue.offer(files[i]);
                }
            }


//            // 取出队列首元素
//            File first = queue.poll();
//            System.out.println(first.getName());
//            // 获取首元素的孩子 ，然后放入 队列中
//            File[] files = first.listFiles();
//            if (files!=null){
//                // 如果有孩子的话，把孩子添加到队列中等待下一轮处理
//                for (int i = 0; i < files.length; i++) {
//                    queue.offer(files[i]);
//                }
//            }
        }
    }
}
